package fr.auzaiphe.joueur.controller;

import fr.auzaiphe.commun.Controller;
import fr.auzaiphe.commun.reseau.PacketChat;
import fr.auzaiphe.commun.reseau.PacketRequestConnexion;
import fr.auzaiphe.joueur.model.IndiceJoueur;
import fr.auzaiphe.joueur.model.JoueurModel;

/**
 * Ne pas toucher pour le moment
 * @author Jojo
 * @author Hugp
 *
 */
public class JoueurController extends Controller
{
	private JoueurModel model;

	/**
	 * Constructeur
	 * @param pModel
	 */
	public JoueurController(JoueurModel pModel)
	{
		this.model = pModel;
	}

	public boolean getPartieEnCours()
	{
		return this.model.isPartieLancee();
	}

	/**
	 * Envoie du message pour le chat au model
	 * @param pText texte tapé par l'utilisateur
	 */
	public void sendMessage( String pText )
	{
		String textePropre = pText.trim();

		if ( textePropre != "" )
		{
			this.model.getClient().send( new PacketChat( textePropre, this.model.getClient().getSocket().getInetAddress(),
																	  this.model.getClient().getPseudo() ) );
		}
	}

	/**
	 * Envoie le login et le mot de passe de l'utilisateur qui
	 * essaye de se connecter
	 * @param pUserName
	 * @param pPassword
	 */
	public void sendConnexion( String pUserName, String pPassword )
	{
		String userNamePropre = pUserName.trim();
		String passwordPropre = pPassword.trim();

		this.model.getClient().send( new PacketRequestConnexion( userNamePropre, passwordPropre,
																 this.model.getClient().getSocket().getLocalAddress(),
																 this.model.getClient().getSocket().getInetAddress() ) );
	}

	/**
	 * Don de temps.
	 * Check le montant de temps avant de l'envoyer à l'admin
	 * @param selectedIndex
	 * @param value
	 */
	public void donTemps( String selectedIndex, int pTempsRestant )
	{

	}

	public IndiceJoueur getIndice(String  pNomIndice )
	{
		return this.model.getJoueurConnecte().getIndice( pNomIndice );
	}

	public void stopperPartie()
	{
		this.model.stopperPartie();
	}

	public void sendDeconnexion()
	{
		this.model.deconnecter();
	}

	public void buyIndice()
	{
		this.model.buyIndice();
	}

	public JoueurModel getJoueurModel()
	{
		return this.model;
	}
}
